package br.org.eda.wj.pdfinder.logica;

import java.util.ArrayList;
import java.util.HashMap;

import br.org.eda.wj.pdfinder.interfaces.IFIndexadorPalavras;
import br.org.eda.wj.pdfinder.objetos.Palavra;

public class IndexadorPalavrasImpl implements IFIndexadorPalavras {
	
	public HashMap<Character, ArrayList<Palavra>> mapaCaractere;
	
	public IndexadorPalavrasImpl(){
		preparaHash();
	}
	
	public HashMap<Character, ArrayList<Palavra>> getMapaCaractere() {
		return mapaCaractere;
	}

	private void preparaHash() {
		// cada ArrayList abaixo recebera o grupo de palavras separadas de
		// acordo com suas iniciais
		
		mapaCaractere = new HashMap<Character, ArrayList<Palavra>>();
		
		ArrayList<Palavra> iniA = new ArrayList<>();
		ArrayList<Palavra> iniB = new ArrayList<>();
		ArrayList<Palavra> iniC = new ArrayList<>();
		ArrayList<Palavra> iniD = new ArrayList<>();
		ArrayList<Palavra> iniE = new ArrayList<>();
		ArrayList<Palavra> iniF = new ArrayList<>();
		ArrayList<Palavra> iniG = new ArrayList<>();
		ArrayList<Palavra> iniH = new ArrayList<>();
		ArrayList<Palavra> iniI = new ArrayList<>();
		ArrayList<Palavra> iniJ = new ArrayList<>();
		ArrayList<Palavra> iniK = new ArrayList<>();
		ArrayList<Palavra> iniL = new ArrayList<>();
		ArrayList<Palavra> iniM = new ArrayList<>();
		ArrayList<Palavra> iniN = new ArrayList<>();
		ArrayList<Palavra> iniO = new ArrayList<>();
		ArrayList<Palavra> iniP = new ArrayList<>();
		ArrayList<Palavra> iniQ = new ArrayList<>();
		ArrayList<Palavra> iniR = new ArrayList<>();
		ArrayList<Palavra> iniS = new ArrayList<>();
		ArrayList<Palavra> iniT = new ArrayList<>();
		ArrayList<Palavra> iniU = new ArrayList<>();
		ArrayList<Palavra> iniV = new ArrayList<>();
		ArrayList<Palavra> iniW = new ArrayList<>();
		ArrayList<Palavra> iniX = new ArrayList<>();
		ArrayList<Palavra> iniY = new ArrayList<>();
		ArrayList<Palavra> iniZ = new ArrayList<>();
		ArrayList<Palavra> iniGeral = new ArrayList<>();

		getMapaCaractere().put('a', iniA);
		getMapaCaractere().put('b', iniB);
		getMapaCaractere().put('c', iniC);
		getMapaCaractere().put('d', iniD);
		getMapaCaractere().put('e', iniE);
		getMapaCaractere().put('f', iniF);
		getMapaCaractere().put('g', iniG);
		getMapaCaractere().put('h', iniH);
		getMapaCaractere().put('i', iniI);
		getMapaCaractere().put('j', iniJ);
		getMapaCaractere().put('k', iniK);
		getMapaCaractere().put('l', iniL);
		getMapaCaractere().put('m', iniM);
		getMapaCaractere().put('n', iniN);
		getMapaCaractere().put('o', iniO);
		getMapaCaractere().put('p', iniP);
		getMapaCaractere().put('q', iniQ);
		getMapaCaractere().put('r', iniR);
		getMapaCaractere().put('s', iniS);
		getMapaCaractere().put('t', iniT);
		getMapaCaractere().put('u', iniU);
		getMapaCaractere().put('v', iniV);
		getMapaCaractere().put('w', iniW);
		getMapaCaractere().put('x', iniX);
		getMapaCaractere().put('y', iniY);
		getMapaCaractere().put('z', iniZ);
		getMapaCaractere().put('0', iniGeral);

	}

	@Override
	public void indexadorPalavras(String[] textoSeparado, String caminho) {

		int cont = textoSeparado.length;

		for (int i = 0; i < cont; i++) { // esta iteracao vai separar as
											// palavras em ArrayList de acordo
											// com suas iniciais,
											// ou seja, um ArrayList para cada
											// grupo de palavras

			if (textoSeparado[i].startsWith("a")) {
				getMapaCaractere().get('a').add(
						new Palavra(textoSeparado[i], caminho, i));

			} else if (textoSeparado[i].startsWith("b")) {
				getMapaCaractere().get('b').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("c")) {
				getMapaCaractere().get('c').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("d")) {
				getMapaCaractere().get('d').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("e")) {
				getMapaCaractere().get('e').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("f")) {
				getMapaCaractere().get('f').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("g")) {
				getMapaCaractere().get('g').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("h")) {
				getMapaCaractere().get('h').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("i")) {
				getMapaCaractere().get('i').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("j")) {
				getMapaCaractere().get('j').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("k")) {
				getMapaCaractere().get('k').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("l")) {
				getMapaCaractere().get('l').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("m")) {
				getMapaCaractere().get('m').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("n")) {
				getMapaCaractere().get('n').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("o")) {
				getMapaCaractere().get('o').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("p")) {
				getMapaCaractere().get('p').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("q")) {
				getMapaCaractere().get('q').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("r")) {
				getMapaCaractere().get('r').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("s")) {
				getMapaCaractere().get('s').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("t")) {
				getMapaCaractere().get('t').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("u")) {
				getMapaCaractere().get('u').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("v")) {
				getMapaCaractere().get('v').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("w")) {
				getMapaCaractere().get('w').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("x")) {
				getMapaCaractere().get('x').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("y")) {
				getMapaCaractere().get('y').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else if (textoSeparado[i].startsWith("z")) {
				getMapaCaractere().get('z').add(
						new Palavra(textoSeparado[i], caminho, i));
			} else {
				getMapaCaractere().get('0').add(
						new Palavra(textoSeparado[i], caminho, i));
			}

		}

	}

}
